package com.xucy.springboot.designmodel.creational.single;

import java.io.Serializable;

/**
 * @Author xucy
 * @Date 2019-07-17 09:36
 * @Description 饿汉式
 **/

public class HungrySingleton implements Serializable {

    //类初始化的时候即初始化对象
    private final static HungrySingleton hungry;

    //私有构造方法，防止new对象
    private HungrySingleton(){
        System.out.println("初始化了");
        //为了防止反射创建对象
        if(hungry!=null){
            throw new RuntimeException("私有构造器禁止通过反射创建");
        }
    }

    //类初始化时初始化
    static {
        hungry=new HungrySingleton();
    }

    public static HungrySingleton getHungry(){
        return hungry;
    }


    //加上这个方法，可以保证序列化 和反序列化之后的对象还是同一个对象
    public Object readResolve(){
        return  hungry;
    }


    public static void testStatic(){
        System.out.println("调用testStatic");
    }
}
